/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Control;

import java.io.IOException;
import java.io.InputStream;
import DAOInfo.DAOInformacion;
import java.util.Vector;

/**
 *
 * @author Yenko
 */
public class ControlInformacion
{
    DAOInformacion daoInformacion;
    public String obtenerInformacion( int XEnLaMira, int YEnLaMira ) throws IOException
    {
        String lineasDeInformacion[] = new String[5];
        InputStream in = getClass().getResourceAsStream("/info1.txt");
        int bandera;
        String respuesta = "";

        while ( (bandera = in.read()) != -1 ) //todo el archivo
        {
            int cuenta = 0;
            
            while ( cuenta < 4 && (bandera = in.read()) != -1 ) //Lectura de 4 lineas
            {
                StringBuffer strBuf = new StringBuffer("");
                while ( (bandera = in.read()) != -1 ) //lectura de linea
                {
                    if ( (char)bandera == '\n' )
                        break;
                    strBuf.append( (char)bandera );
                    //System.out.println("bandera : "+(char)bandera);
                }

                if ( strBuf.length() > 0 )
                {
                    lineasDeInformacion[cuenta] = strBuf.toString();
                    ++cuenta;
                }
            }//terminacion de lectura de lineas de informacion


            try
            {
                int fila, columna, radio;
                String datos[] = split( lineasDeInformacion[3].trim() );

                /*
                System.out.println("Linea que se paso a split : "+lineasDeInformacion[3]);
                for ( int i = 0; i < datos.length; i++ )
                    System.out.println("dato : "+datos[i]);*/

                fila    = Integer.parseInt( datos[0].trim() );
                columna = Integer.parseInt( datos[1].trim() );
                radio   = Integer.parseInt( datos[2].trim() );

                int distanciaCuadrada = Distancia2( fila, columna, XEnLaMira, YEnLaMira );
                
                /*
                System.out.println("Distancia2 : "+distanciaCuadrada);
                System.out.println("Radio2 : "+(radio*radio));*/
                if ( distanciaCuadrada <= radio*radio )
                {
                    respuesta =  "#Edificio: " + lineasDeInformacion[0]+"\n";
                    respuesta += "Nombre: " + lineasDeInformacion[1]+"\n";
                    respuesta += "Facultad: " + lineasDeInformacion[2]+"\n";

                    //for ( int i = 0; i < 3; i++ )
                    //    respuesta += lineasDeInformacion[i]+"\n";
                    break;
                }

                //System.out.println("fila, columna y radio : "+fila+" "+columna+" "+radio);
            }
            catch( Exception e )
            {
                System.out.println("Error en el formato de coordenada o radio, en la imagen.");
            }
            /*
            try
            {
                System.out.println("comparacion de : "+lineasDeInformacion[0]);
                if ( Integer.parseInt(lineasDeInformacion[0].trim()) == 453 ) ///en realida debemos mirar por la coordenada
                {
                    for ( int i = 0; i < 4; i++ )
                        respuesta += lineasDeInformacion[i] + "\n";

                    break;
                }
            }
            catch( Exception e)
            {
                System.out.println("Error en el formato del archivo info1.txt");
                for ( int i = 0; i < 4; i++ )
                    System.out.println( "*" + lineasDeInformacion[i] );

                return ""; //respuesta vacia
            }*/
        }//f lectura archivo

        return respuesta;
    }//f obtenerInformacion

    private String[] split(String original) //funcion que recibe un string,, y la separa por espacios
    {
        Vector nodes = new Vector();
        String separator = " ";
        //System.out.println("split start...................");
        // Parse nodes into vector
        int index = original.indexOf(separator);
        while(index>=0)
        {
            nodes.addElement( original.substring(0, index) );
            original = original.substring(index+separator.length());
            index = original.indexOf(separator);
        }
        // Get the last node
        nodes.addElement( original );

        // Create splitted string array
        String[] result = new String[ nodes.size() ];
        if( nodes.size()>0 )
        {
            for(int loop=0; loop<nodes.size(); loop++)
            {
                result[loop] = (String)nodes.elementAt(loop);
                //System.out.println("resultado en split "+result[loop]);
            }
        }
        return result;
    }//f split

    private int Distancia2( int x1, int y1, int x2, int y2 )
    {
        return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
    }//f Distancia2

}//f ControlInformacion
